/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 * Sleepycat Software. All rights reserved. * * $Id: DbStat.java,v 1.1 2006/05/06 09:00:40 ckaestne Exp $ */ package com.sleepycat.je.util; import java.io.File; import java.io.PrintStream; import java.util.logging.Level; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.DatabaseStats; import com.sleepycat.je.DbInternal; import com.sleepycat.je.Environment; import com.sleepycat.je.JEVersion; import com.sleepycat.je.StatsConfig; import com.sleepycat.je.utilint.CmdUtil; import com.sleepycat.je.utilint.Tracer; public class DbStat extends DbVerify { private String usageString = "usage: " + CmdUtil.getJavaCommand(DbStat.class) + "\n" + " [-V] -s database -h dbEnvHome [-v progressInterval]\n"; private int progressInterval = 0; static public void main(String argv[]) throws DatabaseException { DbStat stat = new DbStat(); stat.parseArgs(argv); int ret = 0; try { if (!stat.stats(System.err)) { ret = 1; } } catch (Throwable T) { ret = 1; T.printStackTrace(System.err); } try { stat.env.close(); } catch (Throwable ignored) { /* * Klockwork - ok * Don't say anything about exceptions here. */ } System.exit(ret); } protected DbStat() { } public DbStat(Environment env, String dbName) { super(env, dbName, false); } protected void printUsage(String msg) { System.err.println(msg); System.err.println(usageString); System.exit(-1); } protected void parseArgs(String argv[]) { int argc = 0; int nArgs = argv.length; while (argc < nArgs) { String thisArg = argv[argc++]; if (thisArg.equals("-V")) { System.out.println(JEVersion.CURRENT_VERSION); System.exit(0); } else if (thisArg.equals("-h")) { if (argc < nArgs) { envHome = new File(argv[argc++]); } else { printUsage("-h requires an argument"); } } else if (thisArg.equals("-s")) { if (argc < nArgs) { dbName = argv[argc++]; } else { printUsage("-s requires an argument"); } } else if (thisArg.equals("-v")) { if (argc < nArgs) { progressInterval = Integer.parseInt(argv[argc++]); if (progressInterval <= 0) { printUsage("-v requires a positive argument"); } } else { printUsage("-v requires an argument"); } } } if (envHome == null) { printUsage("-h is a required argument"); } if (dbName == null) { printUsage("-s is a required argument"); } } public boolean stats(PrintStream out) throws DatabaseException { try { openEnv(); Tracer.trace(Level.INFO, DbInternal.envGetEnvironmentImpl(env), "DbStat.stats of " + dbName + " starting"); DatabaseConfig dbConfig = new DatabaseConfig(); dbConfig.setReadOnly(true); dbConfig.setAllowCreate(false); DbInternal.setUseExistingConfig(dbConfig, true); Database db = env.openDatabase(null, dbName, dbConfig); StatsConfig statsConfig = new StatsConfig(); if (progressInterval > 0) { statsConfig.setShowProgressInterval(progressInterval); statsConfig.setShowProgressStream(out); } DatabaseStats stats = db.getStats(statsConfig); out.println(stats); db.close(); Tracer.trace(Level.INFO, DbInternal.envGetEnvironmentImpl(env), "DbStat.stats of " + dbName + " ending"); } catch (DatabaseException DE) { return false; } return true; } }